package com.newtouch.cq.base.starter.business.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.newtouch.cq.base.starter.business.entity.SysUser;
import com.newtouch.cq.base.starter.business.model.dto.*;
import com.newtouch.cq.base.starter.business.model.dto.*;
import com.newtouch.cq.base.starter.business.model.vo.SysUserPageVo;
import com.newtouch.cq.base.starter.business.model.vo.SysUserVo;
import com.newtouch.cq.base.starter.business.model.vo.UserVO;
import com.newtouch.cq.lang.result.MccObjectResult;
import com.newtouch.cq.lang.result.MccPageResult;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;

/**
 * <p>
 * 系统用户表 服务类
 * </p>
 *
 * @author Alex
 * @since 2021-08-02
 */
public interface IBaseSysUserService extends IService<SysUser> {

    /**
     * 新增系统管理员
     * @param userAddDTO
     */
    void add(SysUserAddDTO userAddDTO);

    /**
     * 编辑系统管理员
     * @param id
     * @param userUpdDTO
     */
    void update(long id, SysUserUpdDTO userUpdDTO);


    /**
     * 个人信息编辑
     * @param dto
     */
    void updateOwnInfo(SysUserOwnUpdDTO dto);

    /**
     * 修改个人密码
     * @param dto
     */
    void updatePassword(@RequestBody SysUserPwdUpdDTO dto);

    /**
     * 通过用户名称查找用户
     * @param username
     * @return
     */
    UserVO findUserVOByUsername(String username);

    /**
     * 分页查询用户
     * @param dto
     * @return
     */
    MccPageResult<SysUserPageVo> pageList(SysUserPageDTO dto);

    /**
     * 分页查询拥有某角色的用户
     * @param dto
     * @return
     */
    MccPageResult<SysUser> getRoleUserPagedList(long roleId,SysUserPageDTO dto);


    /**
     * 获取用户详情
     * @param id
     * @return
     */
    SysUserVo getInfo(long id);

    /**
     * 获取个人信息
     * @return
     */
    MccObjectResult<SysUserVo> getOwnInfo();
    /**
     * 密码重置
     * @param id
     */
    String resetPwd(long id);

    /**
     *删除用户
     * @param id
     */
    void userDel(long id);
}
